#!/usr/bin/python3
# -*- coding:utf-8 -*-
# @Time   :2021/12/19
# @Author :songtx
# @File   :logic_infuse_liquid.py

import numpy as np
from dox_enquiry import dox_command
from i2c import i2c


# doxx dox_12 HC补液泵,dox_13 KCL补液泵,dox_14 pH4补液泵,dox_15 pH6补液泵
# di_07 HCL清洗液补液按钮   di_08 KCL保护液补液按钮  di_12 pH4补液按钮   di_13 pH6补液按钮
def infuse_liquid(liquid_class, err_x):                      # liquid_class｜液体种类,liquiid_class查dict，err为list
    global dict1, dict2
    global edge
    array2 = i2c()                                           # 读当前液位
    print(array2)
    global m, l_s_time

    if m == 1:                                               # 第一步,主程序条件成立进入本函数，判断启动条件是否满足
        if array2[dict1[str(liquid_class)], 1] == 0.0:       # 高液位为False，条件满足
            dox_command([], err_x)                                  # 启动前复位保护，输出全关指令
            print('补液条件满足')
            m += 1                                           # 退出本步进，进入下一步
        else:                                                # 不满足条件
            edge[0, dict2[str(liquid_class)]] = 0            # 复位进入函数指针，退出本逻辑
        return
    if m == 2:                                               # 第二步，输出开泵指令
        if True:                                             # 无效判断
            print('++++++++++++')
            dox_command([liquid_class], err_x)                      # 调用硬件驱动函数，输出开泵指令
            m += 1
        return
    if m == 3:                                               # 第二步
        print(liquid_class, '正在加药++++正在加药++++')
        if array2[dict1[str(liquid_class)], 1] == 1.0:       # 高液位为True
            print('--------')
            dox_command([], err_x)                                  # 调用硬件驱动函数，输出关泵指令
            edge[dict2[str(liquid_class)]] = 0               # 复位进入进程的上升沿
        return
    if l_s_time[1, dict2[str(liquid_class)]]:                # 长脉冲复位补液程序
        dox_command([], err_x)                                      # 复位所有DO指令
        edge[dict2[str(liquid_class)]] = 0                   # 复位进入进程的上升沿
        return


dict1 = {'12': 0, '13': 1, '14': 2, '15': 4}     # 泵DO对应的液位 liquid_class 转 row
dict2 = {'12': 6, '13': 7, '14': 11, '15': 12}   # 泵DO对应的液位 liquid_class 转 row
edge = np.zeros(64, np.int8).reshape(2, 32)      # DI上升/下降沿检测,edge[0,0]第1个up，edge[1,0]第1个down
l_s_time = np.zeros(64, np.int8).reshape(2, 32)  # 短按判断l_s_time[0]|长按判断l_s_time[1]
infuse_liquid(12, [15])
